iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
Modern Web

Rails guide / Ruby API study系列 第 16

[ Rails guide study ]Day 16 Request Forgery Protection in Rails

  • 分享至 

  • xImage
  •  

首先,來聽首歌吧
Yes
後來才發現魏如萱也是一個曲風很多變的創作歌手,剛聽到這首歌的時候覺得超級驚喜,在台灣流行音樂沒聽過像這樣的曲風,希望大家喜歡嚕~


今天來到這篇的第 9 章,剛好之前聽到 Request Forgery 這個名詞覺得困惑,但沒有深入研究,今天來粗淺的探討一下

網路上有種攻擊方式叫做 CSRF (Cross Site Request Forgery),翻成中文的話是跨站請求偽造

這種攻擊方法的概念是讓使用者無意間做了某件事,通常是點了一個連結,或者按了一個按鈕,讓有心人士偽造出使用者本人發出的 request

這邊也來簡單舉個例吧

比方說今天有個惡意人士做了一個下載的連結 www.qoo.com/123456,裡面放的都是一些壞壞的東西

為了讓大家進去下載他們不想下載的東西,就做一個很吸引人的連結,像是恭喜你中大獎或者你是第 100 萬個用戶要送你哀鳳之類的,連結可能長這樣

<a href='www.qoo.com/123456' >請點這裡拿取你的哀鳳!</a>

一點擊,真的會下載這些惡意程式到電腦裡面因此就中招了

這只是個簡單的例子,當然真正要騙人的還會做得更精美,讓你完全不知道自己中招,接下來介紹 Rails 的防禦機制


Rails 的防禦機制是加上 CSRF token,在你送出表單的時候,會隨機產生一組 token,要進入這個連結,Rails 會跟自己的 session 內容比對,確認這組 token 是不是由他產生的,如果不是就會擋掉,防止有心人士蓄意更改網站內容

如果有使用 form builder 的話,應該可以在那個頁面看到像是以下的程式碼:

<input type="hidden"
       value="..."
       name="authenticity_token"/>

上面這段就是提到的 CSRF token 囉!
其中的 value 看起來像是很長的一串亂數,這就是 Rails 生出來的,而且每次重新整理都會更新

如果想更了解 CSRF 可以參考這篇文章,裡面寫得非常詳細,還有提供更多的保護機制~

參考資料
Rails Guide

讓我們來談談 CSRF

本文章同步分享於 http://anthonychao.site/


上一篇
[ Rails guide study ] Day15 Filters
下一篇
[ Rails guide study ]Day 17 Basic / Digest HTTP Authentication
系列文
Rails guide / Ruby API study30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言